package verify

import (
	"github.com/go-playground/validator/v10"
	"log"
	"regexp"
)

const phoneRegExp = `^1([38][0-9]|14[579]|5[^4]|16[6]|7[1-35-8]|9[189])\d{8}$`

// regTagPhone 检查合法的电话号码
func regTagPhone() {
	tag := "phone"
	errorMsg := "{0}不是一个有效的号码"

	if err := validate.RegisterValidation(tag, func(fl validator.FieldLevel) bool {
		if s, ok := fl.Field().Interface().(string); ok {
			rgx := regexp.MustCompile(phoneRegExp)
			return rgx.MatchString(s)
		}
		return false
	}); err != nil {
		log.Fatalf("reg tag '%s' failed. error: %v", tag, err)
	}
	// 添加翻译方法
	if err := validate.RegisterTranslation(
		tag,
		translator,
		RegisterTranslator(tag, errorMsg),
		Translate,
	); err != nil {
		log.Fatalf("make trans for tag '%s' failed. error: %v", tag, err)
	}
}

// regUniquePhone 内置 unique 添加中文翻译
func regUniquePhone() {
	tagName := "unique"
	errorMsg := "{0}存在重复值"
	// 添加翻译方法
	if err := validate.RegisterTranslation(
		tagName,
		translator,
		RegisterTranslator("unique", errorMsg),
		Translate,
	); err != nil {
		log.Fatalf("make trans for tag '%s' failed. error: %v", tagName, err)
	}
}
